import java.util.Arrays;

/**
 * @description:
 * @Author: wuzhenbin
 * @CreateTime: 2025/2/15
 */
public class leetcode_136 {
    public static void main(String[] args) {

    }
    public int singleNumber(int[] nums) {
        //与 0 异或不变：`a ^ 0 = a。任何数
        //自反性：`a ^ a = 0a ^ a = 0。任何数与自身进行异
        int res = 0;
        for (int num : nums) {
            res = num^res;
        }
        return res;
        /*
        按位与（AND）与按位异或（XOR）区别
特性	按位与（AND）	按位异或（XOR）
符号	&	^
规则	两个位都为 1 时，结果为 1	两个位不同时，结果为 1
输出值	只有两个对应位都为 1 时，结果才为 1	对应位不同时，结果为 1
示例	1010 & 1100 = 1000	1010 ^ 1100 = 0110
常见用途	用于掩码操作、判断某位是否为 1	用于找不同、交换两个数、不改变

         */
    }
}
